package server;
/**
 * Die Klasse Customer beherbergt den Benutzername und seinen Einkaufswagen.
 * @author reto
 *
 */
public class Customer implements Cloneable{
	private String name;
	private ShoppingCart shoppingCart;	
	/**
	 * Beim erstellen eines neuen Benutzers wird ihm auch gleich ein neuer Einkaufswagen zugewiesen.
	 * @param name Name des Benutzers
	 */
	public Customer(final String name)
	{
		this.shoppingCart=new ShoppingCart();
		this.name=name;
	}

	/**
	 * Beim erstellen eines neuen Benutzers wird ihm auch gleich ein neuer Einkaufswagen zugewiesen.
	 * @param name Name des Benutzers
	 */
	public Customer()
	{
		this("");	
	}

	/**
	 * 
	 * @return Benutzername oder empty-String falls der Name noch nicht bekannt.
	 */
	public String getName() {
		return this.name;
	}	
	
	public void setName(final String name) {
		this.name = name;
	}
	
	/**
	 * 
	 * @return Sein Einkaufswagen
	 */
	public ShoppingCart getShoppingCart() {
		return this.shoppingCart;
	}		
	
	@Override
	public  Object clone() throws CloneNotSupportedException {
		final Customer clonedCustomer=new Customer(this.name);		
		clonedCustomer.shoppingCart=(ShoppingCart)this.shoppingCart.clone();
		return clonedCustomer;
	}
}
